package jmine.tec.report.api.table;

import java.io.Serializable;

import jmine.tec.report.api.RendererTarget;

/**
 * Inteface que define o comportamento de células de um relatório.
 * 
 * @author lundberg
 */
public interface ReportCell extends RendererTarget, Serializable {

    /**
     * Obtém o valor na forma original
     * 
     * @return object
     */
    Object getValue();

    /**
     * Obtém uma o tipo de renderer
     * 
     * @return rendererType
     */
    String getRendererType();

    /**
     * Define o tipo de renderer
     * 
     * @param rendererType rendererType
     */
    void setRendererType(String rendererType);

    /**
     * Retorna uma cópia desta célula.
     * 
     * @param newValue novo valor que a célula alvo deve conter.
     * @return reportCell
     */
    ReportCell copy(Object newValue);
}
